package projeto.comercial.funcaoservico.cih.dropdown;

import java.util.ArrayList;
import java.util.List;

import org.zkoss.zkplus.spring.SpringUtil;
import org.zkoss.zul.Listheader;
import org.zkoss.zul.ListitemRenderer;

import plataforma.base.cdp.ObjetoPagina;
import plataforma.base.cdp.ResultadoPaginado;
import plataforma.base.cih.ListagemPaginada;
import plataforma.base.cih.NucleoListHeader;
import plataforma.cih.campos.CampoDropDownAvancado;
import plataforma.cih.campos.PainelFiltroBandBox;
import projeto.comercial.funcaoservico.cdp.FuncaoServico;
import projeto.comercial.funcaoservico.cgt.ServiceFuncaoServico;



public class DropDownFuncaoServico extends CampoDropDownAvancado<FuncaoServico> {

	
	/**
	 * Determina se o Campo eh obrigatorio
	 * */
	public DropDownFuncaoServico(boolean isObrigatorio) {
		super(true,isObrigatorio);

	}

	@Override
	public PainelFiltroBandBox definirPainelFiltroBandBox() {
		return new PainelFIltroDropDownFuncaoServico();

	}

	@Override
	public ListagemPaginada<FuncaoServico> definirListagemPaginada() {
		return new ListagemFuncaoServicoSimples();
	}

	@Override
	public String getTextoCampo(FuncaoServico objeto) {

		return objeto.getDescricao();
	}

	@Override
	public ResultadoPaginado<FuncaoServico> obterResultadoPaginado(
			ObjetoPagina pagina) {
		ServiceFuncaoServico service = SpringUtil.getApplicationContext().getBean(
				ServiceFuncaoServico.class);
		return service.recuperarTodosPaginado(pagina);
	}

	public class ListagemFuncaoServicoSimples extends ListagemPaginada<FuncaoServico> {

		@Override
		public List<NucleoListHeader> definirColunasTabela() {

			List<NucleoListHeader> colunas = new ArrayList<NucleoListHeader>();			
			colunas.add(new NucleoListHeader("Nome", "descricao", "100%"));
			return colunas;
		}

		protected void ativarOrdenacaoListHeader(Listheader listheader) {

		}

		@Override
		public ListitemRenderer definirItemRender() {
					
				return null;
		
			/*
			return new ListitemRenderer() {

				@Override
				public void render(Listitem item, Object data) throws Exception {

					FuncaoServico objeto = (FuncaoServico) data;

					item.setValue(data);

					Image imagem = new Image();
					if (objeto.isAtivo())
						imagem.setSrc("/imagens/green.png");
					else
						imagem.setSrc("/imagens/red.png");

					Listcell celula = new Listcell();
					celula.setStyle(" margin-left: auto;margin-right: auto");
					celula.appendChild(imagem);
					item.appendChild(celula);

					celula = new Listcell(objeto.getDescricao());
					item.appendChild(celula);

				}
			};*/
		}

		@Override
		protected String[] recuperarDadosObjeto(FuncaoServico objeto) {
			//Coloquei um texto inativado apenas para melhorar a legibilidade desses casos.O ideal era destacar mais
			String complemento = objeto.isAtivo() ? "" : " ( Inativado )";
			return new String[] { objeto.getDescricao()+complemento };
		}

	}

	@Override
	public void atualizarListagem(ObjetoPagina pagina) {
		acaoPesquisar();

	}

}
